package tk.paulista.dc.control;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import javax.validation.constraints.Min;
import org.springframework.roo.addon.web.mvc.controller.scaffold.RooWebScaffold;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import tk.paulista.dc.model.TipoDeAtividadeFisica;

@RequestMapping("/tipodeatividadefisicas")
@Controller
@RooWebScaffold(path = "tipodeatividadefisicas", formBackingObject = TipoDeAtividadeFisica.class)
public class TipoDeAtividadeFisicaController {

    @RequestMapping(method = RequestMethod.POST, produces = "text/html")
    public String create(@Valid TipoDeAtividadeFisica tipoDeAtividadeFisica, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
        if (bindingResult.hasErrors()) {
            populateEditForm(uiModel, tipoDeAtividadeFisica);
            return "tipodeatividadefisicas/create";
        }
        uiModel.asMap().clear();
        setQuantidadeDeCalorias(tipoDeAtividadeFisica);
        tipoDeAtividadeFisica.persist();
        return "redirect:/tipodeatividadefisicas/" + encodeUrlPathSegment(tipoDeAtividadeFisica.getId().toString(), httpServletRequest);
    }

    private void setQuantidadeDeCalorias(TipoDeAtividadeFisica tipoDeAtividadeFisica) {
        tipoDeAtividadeFisica.setQuantidadeDeCaloriasPorMinutoDaAtividadeFisica(tipoDeAtividadeFisica.getQuantidadeDeCaloriasDaAtividadeFisica() / tipoDeAtividadeFisica.getQuantidadeDeMinutosDaAtividadeFisica());
    }

    @RequestMapping(method = RequestMethod.PUT, produces = "text/html")
    public String update(@Valid TipoDeAtividadeFisica tipoDeAtividadeFisica, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
        if (bindingResult.hasErrors()) {
            populateEditForm(uiModel, tipoDeAtividadeFisica);
            return "tipodeatividadefisicas/update";
        }
        uiModel.asMap().clear();
        setQuantidadeDeCalorias(tipoDeAtividadeFisica);
        tipoDeAtividadeFisica.merge();
        return "redirect:/tipodeatividadefisicas/" + encodeUrlPathSegment(tipoDeAtividadeFisica.getId().toString(), httpServletRequest);
    }
}
